import { getSetting, chooseAddress, openSetting, showModal ,showToast} from "../../utils/asyncWx.js";
import regeneratorRuntime from '../../lib/runtime/runtime'
Page({

  /**
   * 页面的初始数据
   */

  data: {
    address:{},
    cart:[],
    allCheck:false,
    totalPrice:"",
    totalNum:""
  },

  onShow(){
    // 将存进缓存的数据储存进地址
   const address= wx.getStorageSync("address");
   const cart = wx.getStorageSync("cart")||[];

  // 遍历购物车数组
  // // const allCheck =cart.length?cart.every(v=>v.check):false;
  this.setData({address})
 this.setCart(cart);
  },
// 获取收获地址按钮点击函数
  handleChooseAddress(){
    wx.chooseAddress({
      success: (result) => {
        
        wx.setStorageSync("address", result);
          
      },
    
    });
      
  },
  //处理商品复选框被点击的函数
  handleItemChange(e){
    // 获取被选中的id
    const goods_id = e.target.dataset.id
    //获取购物车数组
    let {cart} =this.data
    // 找到相同id的商品
    let index = cart.findIndex(v=>v.goods_id==goods_id)
    // 将选中的状态取反
    cart[index].check =!cart[index].check
    //重新覆盖原有的data和缓存
    this.setCart(cart);

  },
  //修改购物车数组数据后重新渲染页面
  setCart(cart){
    let allCheck = true;
    let totalPrice =0;
    let totalNum = 0;
    //遍历循环购物车数组 计算总价格和全选按钮
    cart.forEach(v => {
      if(v.check){
        totalPrice+=v.num*v.goods_price,
        totalNum += v.num;
      }else{
        allCheck = false;
      }
    });
    //当购物车数组为空 不勾选全选框
    allCheck=cart.length!=0?allCheck:false;
    this.setData({
      cart,
      totalPrice,
      totalNum,
      allCheck
    }),
    // 把数据存进缓存中
    wx.setStorageSync("cart",cart)
  },
  //点击全选复选框函数
  handleItemAllChange(){
    // 获取购物车数组和全选状态
    let {cart,allCheck} = this.data
    //将全选状态取反
    allCheck=!allCheck;
    // 使用遍历将购物车中的选中状态修改与全选框一样
      cart.forEach(v=>v.check=allCheck)
      // 重新赋值购物车数组
     this.setCart(cart);
  },
  //处理商品数量
  async handleItemNumEdit(e){
    // 获取购物车数组
    let {cart} = this.data;
    //获取要改变商品id和增减
    const {id,operation} = e.currentTarget.dataset
    console.log(e.currentTarget.dataset)
    // 从购物车中找到该商品
   const index = cart.findIndex(v=>v.goods_id===id)
   if (cart[index].num === 1 && operation === -1) {
    // 4.1 弹窗提示
    const res = await wx.showModal({ content: "您是否要删除该商品？" });
    if (res.confirm) {
      cart.splice(index, 1);
      this.setCart(cart);
    }
  } else {
    // 4  进行修改数量
    cart[index].num += operation;
    // 5 设置回缓存和data中
    this.setCart(cart);
  }
  },
  //处理点击结算按钮
   async handlePay(){
    //判断地址或者购物车是否为空
    const{address,totalNum} =this.data;
    if(!address.userName){
     await showToast({title:"请填写收货地址"})
     return;
    }
    if(totalNum===0){
      await showToast({title:"请选择购买的商品"})
      return
    }
    wx.navigateTo({
      url: '/pages/pay/pay',
    
    });
      
  }

})